package com.zhentao.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 业务来源枚举
 * @author zhentao
 * @date 2024-12-19
 */
@Getter
@AllArgsConstructor
public enum BusinessSourceEnum {
    
    /**
     * 网页操作
     */
    WEB("WEB", "网页操作", "通过Web界面进行的操作"),
    
    /**
     * API接口
     */
    API("API", "API接口", "通过REST API进行的操作"),
    
    /**
     * 系统内部
     */
    SYSTEM("SYSTEM", "系统内部", "系统内部自动执行的操作"),
    
    /**
     * 批量处理
     */
    BATCH("BATCH", "批量处理", "批量导入或批处理操作"),
    
    /**
     * 定时任务
     */
    SCHEDULE("SCHEDULE", "定时任务", "定时任务执行的操作"),
    
    /**
     * 数据同步
     */
    SYNC("SYNC", "数据同步", "数据同步操作"),
    
    /**
     * 管理后台
     */
    ADMIN("ADMIN", "管理后台", "管理后台操作"),
    
    /**
     * 移动端
     */
    MOBILE("MOBILE", "移动端", "移动应用操作");
    
    private final String code;
    private final String name;
    private final String description;
    
    /**
     * 根据代码获取枚举
     */
    public static BusinessSourceEnum getByCode(String code) {
        for (BusinessSourceEnum source : values()) {
            if (source.getCode().equals(code)) {
                return source;
            }
        }
        return null;
    }
    
    /**
     * 是否为有效的业务来源代码
     */
    public static boolean isValidCode(String code) {
        return getByCode(code) != null;
    }
}

